package com.ruoyi.business.utils;

import java.math.BigDecimal;
import java.util.regex.Pattern;

public class MoneyValidator {
    // 正则表达式：支持正负号、千位分隔符、可选小数部分
    private static final Pattern MONEY_PATTERN =
            Pattern.compile("^[+-]?\\d{1,3}(,\\d{3})*(\\.\\d{1,2})?$");

    public static BigDecimal parseMoney(String moneyStr) throws IllegalArgumentException {
        if (moneyStr == null || moneyStr.trim().isEmpty()) {
            throw new IllegalArgumentException("输入不能为空");
        }

        // 移除所有千位分隔符（逗号），因为 BigDecimal 不接受逗号
        String normalizedStr = moneyStr.replace(",", "");

        // 校验格式
        if (!MONEY_PATTERN.matcher(moneyStr).matches()) {
            throw new MyException("非法的金钱格式: " + moneyStr);
        }

        try {
            return new BigDecimal(normalizedStr);
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException("转换失败: " + moneyStr, e);
        }
    }
}
